package br.com.model.entidade;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import br.com.arquitetura.entidade.Persistente;

@Entity
public class Professor implements Persistente {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	private Long id;
	private String email;
	private String nomePai;
	private String nomeMae;
	private String sexo;
	private String estadoCivil;
	private String raca;
	private String tipoSanquineo;
	private String rg;
	private String orgaoExpeditorRg;
	private String ufRg;
	private Calendar dataExpedicaoRg;
	private String titulo;
	private String zonaTitulo;
	private String secao;
	private String ufTitulo;
	private String conta;
	private String banco;
	private String agencia;

	private String telefone1;
	private String telefone2;
	private String endereco;
	private String cep;
	private String numero;
	private String bairro;
	private String cidade;
	private String estado;
	@OneToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
	private Usuario usuario;
	
	@OneToMany(mappedBy="professor")
	private List<Aula> aulas;
	
	@ManyToMany
	private List<Escola> escolas;

	public Professor() {
		usuario = new Usuario();
		this.escolas = new ArrayList<Escola>();
	}
	
	
	public List<Aula> getAulas() {
		return aulas;
	}



	public void setAulas(List<Aula> aulas) {
		this.aulas = aulas;
	}



	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getTelefone1() {
		return telefone1;
	}

	public void setTelefone1(String telefone1) {
		this.telefone1 = telefone1;
	}

	public String getEndereco() {
		return endereco;
	}
	
	

	public String getTelefone2() {
		return telefone2;
	}

	public void setTelefone2(String telefone2) {
		this.telefone2 = telefone2;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<Escola> getEscolas() {
		return escolas;
	}

	public void setEscolas(List<Escola> escolas) {
		this.escolas = escolas;
	}

	public String getNomePai() {
		return nomePai;
	}

	public void setNomePai(String nomePai) {
		this.nomePai = nomePai;
	}

	public String getNomeMae() {
		return nomeMae;
	}

	public void setNomeMae(String nomeMae) {
		this.nomeMae = nomeMae;
	}

	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	public String getEstadoCivil() {
		return estadoCivil;
	}

	public void setEstadoCivil(String estadoCivil) {
		this.estadoCivil = estadoCivil;
	}

	public String getRaca() {
		return raca;
	}

	public void setRaca(String raca) {
		this.raca = raca;
	}

	public String getTipoSanquineo() {
		return tipoSanquineo;
	}

	public void setTipoSanquineo(String tipoSanquineo) {
		this.tipoSanquineo = tipoSanquineo;
	}

	public String getRg() {
		return rg;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	public String getOrgaoExpeditorRg() {
		return orgaoExpeditorRg;
	}

	public void setOrgaoExpeditorRg(String orgaoExpeditorRg) {
		this.orgaoExpeditorRg = orgaoExpeditorRg;
	}

	public String getUfRg() {
		return ufRg;
	}

	public void setUfRg(String ufRg) {
		this.ufRg = ufRg;
	}

	public Calendar getDataExpedicaoRg() {
		return dataExpedicaoRg;
	}

	public void setDataExpedicaoRg(Calendar dataExpedicaoRg) {
		this.dataExpedicaoRg = dataExpedicaoRg;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public String getZonaTitulo() {
		return zonaTitulo;
	}

	public void setZonaTitulo(String zonaTitulo) {
		this.zonaTitulo = zonaTitulo;
	}

	public String getSecao() {
		return secao;
	}

	public void setSecao(String secao) {
		this.secao = secao;
	}

	public String getUfTitulo() {
		return ufTitulo;
	}

	public void setUfTitulo(String ufTitulo) {
		this.ufTitulo = ufTitulo;
	}

	public String getConta() {
		return conta;
	}

	public void setConta(String conta) {
		this.conta = conta;
	}

	public String getBanco() {
		return banco;
	}

	public void setBanco(String banco) {
		this.banco = banco;
	}

	public String getAgencia() {
		return agencia;
	}

	public void setAgencia(String agencia) {
		this.agencia = agencia;
	}

	

   	
	
	
	
}
